From: Giovanni Campagna Date: Sat, 29 Dec 2012 14:25:03 +0000 (+0100) Subject: ScreenShield: don't reset the lock screen animation if it's already happening X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~5139 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a757ce48a14e987814ccc23de742a4e4aaebcade;p=gnome-shell.git ScreenShield: don't reset the lock screen animation if it's already happening When you click Suspend from the user menu, the following things happen: - we lock the screen internally by calling Main.screenShield.lock() and waiting for lock-screen-shown - logind emits a Lock signal, which causes us to lock again - gnome-settings-daemon notices PrepareForSleep, and calls org.gnome.ScreenSaver.Lock, just in case, so we lock once more This means that, if you're lucky, you can see the curtain fall down multiple times, as each .lock() call resets the animation. https://bugzilla.gnome.org/show_bug.cgi?id=690858 --- diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index 3ee24ebbc..81d9655ee 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -760,6 +760,10 @@ const ScreenShield = new Lang.Class({ }, _resetLockScreen: function(animateLockScreen, animateLockDialog) { + if (this._lockScreenState == MessageTray.State.SHOWING || + this._lockScreenState == MessageTray.State.SHOWN) + return; + this._ensureLockScreen(); this._lockDialogGroup.scale_x = 1; this._lockDialogGroup.scale_y = 1;